package com.ruoyi.dispatch.service.impl;

import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.dispatch.domain.ProductionMonthPlan;
import com.ruoyi.dispatch.mapper.ProductionMonthPlanMapper;
import com.ruoyi.dispatch.service.IProductionMonthPlanService;
import com.ruoyi.framework.utils.BeanCopyUtils;
import org.apache.commons.compress.utils.Lists;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 回采月计划Service业务层处理
 * 
 * @author wuxiaofang
 * @date 2025-05-19
 */
@Service
public class ProductionMonthPlanServiceImpl implements IProductionMonthPlanService 
{
    @Autowired
    private ProductionMonthPlanMapper productionMonthPlanMapper;

    /**
     * 查询回采月计划
     * 
     * @param proMonthPlanId 回采月计划主键
     * @return 回采月计划
     */
    @Override
    public ProductionMonthPlan selectProductionMonthPlanByProMonthPlanId(Long proMonthPlanId)
    {
        return productionMonthPlanMapper.selectProductionMonthPlanByProMonthPlanId(proMonthPlanId);
    }

    /**
     * 查询回采月计划列表
     * 
     * @param productionMonthPlan 回采月计划
     * @return 回采月计划
     */
    @Override
    public List<ProductionMonthPlan> selectProductionMonthPlanList(ProductionMonthPlan productionMonthPlan)
    {
        return productionMonthPlanMapper.selectProductionMonthPlanList(productionMonthPlan);
    }

    /**
     * 新增回采月计划
     * 
     * @param productionMonthPlan 回采月计划
     * @return 结果
     */
    @Override
    public int insertProductionMonthPlan(ProductionMonthPlan productionMonthPlan)
    {
        productionMonthPlan.setCreateTime(DateUtils.getNowDate());
        return productionMonthPlanMapper.insertProductionMonthPlan(productionMonthPlan);
    }

    /**
     * 修改回采月计划
     * 
     * @param productionMonthPlan 回采月计划
     * @return 结果
     */
    @Override
    public int updateProductionMonthPlan(ProductionMonthPlan productionMonthPlan)
    {
        productionMonthPlan.setUpdateTime(DateUtils.getNowDate());
        return productionMonthPlanMapper.updateProductionMonthPlan(productionMonthPlan);
    }

    /**
     * 批量删除回采月计划
     * 
     * @param proMonthPlanIds 需要删除的回采月计划主键
     * @return 结果
     */
    @Override
    public int deleteProductionMonthPlanByProMonthPlanIds(Long[] proMonthPlanIds)
    {
        return productionMonthPlanMapper.deleteProductionMonthPlanByProMonthPlanIds(proMonthPlanIds);
    }

    /**
     * 删除回采月计划信息
     * 
     * @param proMonthPlanId 回采月计划主键
     * @return 结果
     */
    @Override
    public int deleteProductionMonthPlanByProMonthPlanId(Long proMonthPlanId)
    {
        return productionMonthPlanMapper.deleteProductionMonthPlanByProMonthPlanId(proMonthPlanId);
    }

    @Override
    public List<ProductionMonthPlan> copyLastMonthPlan(String targetMonth) {
        String lastMonth = DateUtils.getlastMonth(targetMonth);

        //查询上月计划数据
        ProductionMonthPlan param = new ProductionMonthPlan();
        param.setMonthDate(lastMonth);
        List<ProductionMonthPlan> lastMonthPlanList = productionMonthPlanMapper.selectProductionMonthPlanList(param);

        List<ProductionMonthPlan> targetMonthPlanList = Lists.newArrayList();
        for (ProductionMonthPlan item : lastMonthPlanList) {
            ProductionMonthPlan newPlan = BeanCopyUtils.copyProperties(item, ProductionMonthPlan.class);
            //修改必要字段
            newPlan.setProMonthPlanId(null);
            newPlan.setMonthDate(targetMonth);
            newPlan.setCreateTime(DateUtils.getNowDate());
            newPlan.setUpdateTime(null);
            targetMonthPlanList.add(newPlan);
            //数据入库
            productionMonthPlanMapper.insertProductionMonthPlan(newPlan);
        }

        return targetMonthPlanList;
    }
}
